/*******************************************************************************
* Copyright (c) 2010 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.tests.internal;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.internal.registry.EditorDescriptor;
import org.eclipse.ui.internal.registry.FileEditorMapping;
import org.eclipse.ui.tests.harness.util.UITestCase;
public class FileEditorMappingTest extends UITestCase {
private EditorDescriptor textEditor;
private EditorDescriptor pdeEditor;
public FileEditorMappingTest(String testName) {
super(testName);
}
@Override
protected void doSetUp() throws Exception {
super.doSetUp();
textEditor = (EditorDescriptor) IDE.getEditorDescriptor("test.txt");
pdeEditor = (EditorDescriptor) IDE.getEditorDescriptor("plugin.xml");
}
public void testEquals() {
FileEditorMapping mappingA = new FileEditorMapping("txt");
mappingA.addEditor(textEditor);
assertEquals(1, mappingA.getEditors().length);
assertEquals(textEditor, mappingA.getEditors()[0]);
FileEditorMapping mappingB = new FileEditorMapping("txt");
assertFalse("No editor set for B, should not be equal", mappingA
.equals(mappingB));
mappingA.addEditor(pdeEditor);
mappingB.addEditor(textEditor);
mappingB.addEditor(pdeEditor);
assertEquals(textEditor, mappingA.getDefaultEditor());
assertEquals(textEditor, mappingB.getDefaultEditor());
assertEquals(mappingA, mappingB);
mappingA.setDefaultEditor(textEditor);
mappingB.setDefaultEditor(pdeEditor);
assertEquals(textEditor, mappingA.getDefaultEditor());
assertEquals(pdeEditor, mappingB.getDefaultEditor());
assertFalse("Identical except the default editor, should not be equal",
mappingA.equals(mappingB));
}
public void testEquals2() {
FileEditorMapping mappingA = new FileEditorMapping("txt");
FileEditorMapping mappingB = new FileEditorMapping("txt");
mappingA.addEditor(textEditor);
mappingA.addEditor(pdeEditor);
mappingB.addEditor(textEditor);
mappingB.addEditor(pdeEditor);
assertEquals(textEditor, mappingA.getDefaultEditor());
assertEquals(textEditor, mappingB.getDefaultEditor());
assertEquals(mappingA, mappingB);
List defaultA = new ArrayList();
defaultA.add(textEditor);
List defaultB = new ArrayList();
defaultB.add(pdeEditor);
mappingA.setDefaultEditors(defaultA);
mappingB.setDefaultEditors(defaultB);
assertFalse("Identical except the default editor, should not be equal",
mappingA.equals(mappingB));
}
public void testHashCode() {
FileEditorMapping mappingA = new FileEditorMapping("txt");
mappingA.addEditor(textEditor);
assertEquals(1, mappingA.getEditors().length);
assertEquals(textEditor, mappingA.getEditors()[0]);
FileEditorMapping mappingB = new FileEditorMapping("txt");
assertFalse("No editor set for B, should not be equal", mappingA
.hashCode() == mappingB.hashCode());
mappingA.addEditor(pdeEditor);
mappingB.addEditor(textEditor);
mappingB.addEditor(pdeEditor);
assertEquals(textEditor, mappingA.getDefaultEditor());
assertEquals(textEditor, mappingB.getDefaultEditor());
assertEquals(mappingA.hashCode(), mappingB.hashCode());
mappingA.setDefaultEditor(textEditor);
mappingB.setDefaultEditor(pdeEditor);
assertEquals(textEditor, mappingA.getDefaultEditor());
assertEquals(pdeEditor, mappingB.getDefaultEditor());
assertFalse("Identical except the default editor, should not be equal",
mappingA.hashCode() == mappingB.hashCode());
}
public void testHashCode2() {
FileEditorMapping mappingA = new FileEditorMapping("txt");
FileEditorMapping mappingB = new FileEditorMapping("txt");
mappingA.addEditor(textEditor);
mappingA.addEditor(pdeEditor);
mappingB.addEditor(textEditor);
mappingB.addEditor(pdeEditor);
assertEquals(textEditor, mappingA.getDefaultEditor());
assertEquals(textEditor, mappingB.getDefaultEditor());
assertEquals(mappingA.hashCode(), mappingB.hashCode());
List defaultA = new ArrayList();
defaultA.add(textEditor);
List defaultB = new ArrayList();
defaultB.add(pdeEditor);
mappingA.setDefaultEditors(defaultA);
mappingB.setDefaultEditors(defaultB);
assertFalse("Identical except the default editor, should not be equal",
mappingA.hashCode() == mappingB.hashCode());
}
public void testClone() {
FileEditorMapping mapping = new FileEditorMapping("txt");
assertEquals(mapping, mapping.clone());
mapping.addEditor(textEditor);
assertEquals(mapping, mapping.clone());
mapping.removeEditor(textEditor);
assertEquals(mapping, mapping.clone());
}
}